﻿using System;
using System.Net;
using System.Net.Mail;
using System.Text.RegularExpressions;
using HpSocketIotGateway.Properties;
using log4net;

namespace HpSocketIotGateway.Facade
{
    public class QqMail
    {
        private static readonly ILog Log = LogManager.GetLogger(typeof(QqMail));
        public static void Send(string msg)
        {
            try
            {
                //实例化一个发送邮件类。
                MailMessage mailMessage = new MailMessage();
                //收件人邮箱地址。
                var toMails = Settings.Default.ToMail.Split(';');
                int count = 0;
                foreach (var mail in toMails)
                {
                    if (!string.IsNullOrWhiteSpace(mail))
                    {
                        var str = Regex.Match(mail, "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$").Value;
                        if (String.Compare(mail, str, StringComparison.Ordinal) == 0)
                        {
                            mailMessage.To.Add(new MailAddress(mail));
                            count++;
                        }
                    }
                }
                if (count < 1)
                {
                    return;
                }
                //发件人邮箱地址，方法重载不同，可以根据需求自行选择。
                mailMessage.From = new MailAddress("272946056@qq.com");
                //邮件标题。
                mailMessage.Subject = "前端启动信息";
                //邮件内容。
                mailMessage.Body = Settings.Default.SMS + "\n" + msg;
                //实例化一个SmtpClient类。
                //在这里我使用的是qq邮箱，所以是smtp.qq.com，如果你使用的是126邮箱，那么就是smtp.126.com。
                //使用安全加密连接。
                //不和请求一块发送。
                //验证发件人身份(发件人的邮箱，邮箱里的生成授权码);
                SmtpClient client = new SmtpClient
                {
                    Host = "smtp.qq.com",
                    Port = 587,
                    EnableSsl = true,
                    UseDefaultCredentials = false,
                    Credentials = new NetworkCredential("272946056@qq.com", "zafcvrjnphszbhdb")
                };
                //发送
                client.Send(mailMessage);
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
    }
}
